/** 
 * @file Intervalos.java
 * 
 * @author Luis Ernesto Carrera Retana
 * @date 2009-08-22
 */

package estadistec.logica.tipos;

import estadistec.logica.tabla.MIntervalo;

import estadistec.excepciones.ExcepcionCapacidadExcedida;
import estadistec.excepciones.ExcepcionCapacidadNegativa;

/** 
 * Se incluye para formatear la conversión a string de los números.
 */
import java.text.DecimalFormat;

/** 
 * Clase para los valores de tipo Intervalo.
 **/
public class Intervalos extends Valores<Intervalo> {

	/** 
	 * Guarda el número de decimales.
	 */
	private int _noDecimales;

	/** 
	 * Guarda el formato para convertir a un string.
	 */
	private DecimalFormat _miFormato;

	/** 
	 * Constructor. 
	 *
	 * Para las excepciones @see estadistec.logica.tipos.Valores#Valores
	 */
	public Intervalos (int noCasos) 
		throws ExcepcionCapacidadNegativa, ExcepcionCapacidadExcedida
	{
		super(noCasos);
		this._noDecimales = 2;
		this._miFormato = new DecimalFormat("#####0.00");
		this.setValorXDefecto("[0,0]");
	}

	/** 
	 * @see estadistec.logica.tipos.Valores#getTipo
	 */
	public TipoValor getTipo() {
		return TipoValor.INTERVALO;
	}

	/** 
	 * @see estadistec.logica.tipos.Valores#setNoDecimales
	 */
	public void setNoDecimales (int n) {
		this._noDecimales = n;
		if (n == 0)
			this._miFormato.applyPattern("#####0");
		else
			this._miFormato.applyPattern("#####0." + ("000000".substring(n)));
	}

	/** 
	 * @see estadistec.logica.tipos.Valores#getNoDecimales
	 */
	public int getNoDecimales () {
		return this._noDecimales;
	}

	/** 
	 * @see estadistec.logica.tabla.MIntervalo#obtenerValor
	 */
	protected Intervalo _obtenerValor (String texto)  
	{
		return MIntervalo.obtenerValor(texto);
	}

	/** 
	 * Convierte un valor de tipo Float a un string.
	 */
	protected String _obtenerTexto(Intervalo valor) 
	{
		return MIntervalo.obtenerTexto(valor, this._miFormato);
	}

}
